

package com.viweb.storemanager.core;

import java.awt.Cursor;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;

public class HeaderListener extends MouseAdapter {
    JTableHeader header;

    public HeaderListener(JTableHeader header) {
      this.header = header;
    }

    @Override
    public void mousePressed(MouseEvent e) {
        if (e.getComponent().getCursor().getType() == Cursor.DEFAULT_CURSOR) {
            boolean isAscent = true;
            int col = header.columnAtPoint(e.getPoint());
            int sortCol = header.getTable().convertColumnIndexToModel(col);
            TableColumnModel columnmodel = header.getTable().getColumnModel();
            
            
            for (int index = 0; index < columnmodel.getColumnCount(); index++) {
                HeaderRenderer headerrenderer = (HeaderRenderer)columnmodel.getColumn(index).getHeaderRenderer();
                
                if (headerrenderer != null) {
                    headerrenderer.setPushedColumn(index == col);
                    if (index == col) {
                        if (headerrenderer.getSortStyle() != HeaderRenderer.DOWN) {
                            headerrenderer.setSortStyle(HeaderRenderer.DOWN);
                            isAscent = false;
                        } else {
                            headerrenderer.setSortStyle(HeaderRenderer.UP);
                        }
                    } else {
                        ((HeaderRenderer)columnmodel.getColumn(index).getHeaderRenderer()).setSortStyle(0);
                    }
                    ((HeaderRenderer)columnmodel.getColumn(index).getHeaderRenderer()).refresh();
                }
            }
            
            // Hủy bỏ việc hiệu chỉnh thay đổi thông tin tại cell đang đứng
            this.header.getTable().removeEditor();
            // ((DefaultTableModel)header.getTable().getModel()).sortByColumn(col, isAscent);
        }
    }   
    
  }
